約 4,835,788 件
https://w.atwiki.jp/tomokazu0525/pages/220.html
最終更新日時2012-03-17ここを編集 ■目次 できることSKYPE同士タダで電話できる。 固定電話や携帯電話(SKYPEの入ってないもの)2円66銭/分で電話できる。 初期投資ハードウェア 通信契約docomo ソフトバンク KDDI 手順 skypeみたいなもの ページフッタこのページの1階層上のページ このページの1階層下のページ このページに含まれるタグ このページへのアクセス数 ■本文 できること SKYPE同士 タダで電話できる。 相手が携帯電話でも、スマートフォンなら、スマートフォンにインストールすれば大丈夫。 Androidでのビデオチャットと3G通話 - Skype for Android - Skype 固定電話や携帯電話(SKYPEの入ってないもの) 2円66銭/分で電話できる。 携帯電話/固定電話に通話を発信 - 経費削減、経費削減、無料通話 - Skype 初期投資 ハードウェア 無料。 パソコンなら必要に応じてマイクを買わないといけないが、andoroidにはもともとマイクがあるので。 通信契約 docomo パケット定額サービス | 料金・割引 | NTTドコモ データ通信では利用できない。 ご利用いただけないもの | サービス・機能 | NTTドコモ ソフトバンク iPhoneはandoroidじゃないけど、まとまってるので。 iPhoneユーザーはSkypeを使わない手は無い!料金一覧&ホワイトプラン料金を比較してみた | ひとぅブログ KDDI サービス情報 | Skype (TM) | au by KDDI 手順 スカイプの使い方 skypeみたいなもの 互換性不明。 カカオトーク KakaoTalk - Android マーケット ページフッタ このページの1階層上のページ このページの1階層下のページ このページに含まれるタグ skype このページへのアクセス数 今日: - 昨日: - これまで合計: - ここを編集
https://w.atwiki.jp/android_api/pages/17.html
Androidアプリは「アクティビティ」、「ブロードキャストレシーバー」、「サービス」、「コンテンツプロバイダ」の4つの構成要素から成り立ちます。 リソースクラスです。標準的なアンドロイドアプリケーションに使用されます。このパッケージにはアンドロイドアプリケーションを使う際の定義がされています。サードパーティの開発者が使うことのできるたくさんのアップリケーションがあります。リソースの詳細についてはリソースとアセットをご覧ください。
https://w.atwiki.jp/mywiki2010/pages/14.html
USBブート可能なx86マシンでAndroidを動作させる。 参考サイト一覧 「Android」をx86パソコンで動かそう ITpro 話題の携帯向けOS「Android」をx86パソコンで動かしてみよう (2009/02/27) ブログなど NWLab.com USB起動可能なAndoroid OSでPCからAndroidを起動してみました(2009/04/13) 即席USBブート環境構築(Windows編) ダウンロード可能なイメージファイルでお手軽にAndroidを動作させる。 (更新 2010/02/09) (1) 必要なものを用意 WindowsがインストールされたPC USBブート可能なPC(WindowsPCと同じでも良い) USBメモリ1GBもあれば十分。 FAT32でフォーマットしておく。 不慮の事故でデータが消えても困らないよう、大事なデータは事前にバックアップ。 (2) Androidのブート・イメージ入手 「USBブート・イメージ入手先」からファイルをダウンロードする。 (3) ブート・イメージの書き込み 書き込みソフトを使ってブート・イメージをUSBメモリに書き込む。 ソフト一覧 DDforWindowsWindowsXP, WindowsVistaで使用可。他Windowsでは未検証。 本ソフトでUSBから読み込んだディスクイメージはLinuxのddコマンドでそのまま使用可能。 (4) Android起動 Andoridを動かすPCでUSBブート可能になるようBIOSを設定するEeePC1000HEでは、PC起動時にESCキーを連打することでブート・ドライブを選択可能。 電源の入っていないPCのUSBポートにUSBメモリを差し込む 電源を入れるとAndroidが立ち上がる起動中にもUSBアクセスを行っているので、USBメモリは抜かないよう注意。 設定を変更した場合(表示言語など)は変更内容がUSBメモリに書き込まれ、次回起動時にも反映される。
https://w.atwiki.jp/android-reference/pages/21.html
android Contains the resource classes used by standard Android applications. Classes Manifest Manifest.permission Manifest.permission_group R R.anim R.array R.attr R.bool R.color R.dimen R.drawable R.id R.integer R.layout R.plurals R.raw R.string R.style R.styleable R.xml コメント 名前 コメント すべてのコメントを見る
https://w.atwiki.jp/melodroid/pages/16.html
Android開発環境構築 概略 Androidの標準的なビルド環境の構築について記載する。 基本的には、Android Open Source Projectの和訳になる。 目次 開発環境構築 ソース取得準備 ソース取得方法(repo) ソース取得方法(git) ビルド方法 開発環境構築 Ubuntu Linux(8.04,32bit-x86)上での開発環境構築について書く。 Windows上でやりたい場合は、VMware等を利用して実施。 Macとか他のLinuxディストリビューションについては、参照元をチェック。 アップデート実施「アップデート・マネージャ」を起動する(「システム」→「システム管理」→「アップデート・マネージャ」を選択) アップデートを実施する(「アップデートをインストールする」を押す) パスワードを要求されるので、入力してEnterキーを押す。 必要なパッケージを追加する。「端末」を起動する(「アプリケーション」→「アクセサリ」→「端末」を選択) 「端末」上で、下記のコマンドを入力して、Enterキーを押す。sudo apt-get install git-core gnupg sun-java5-jdk flex bison gperf libsdl-dev libesd0-dev libwxgtk2.6-dev build-essential zip curl libncurses5-dev zlib1g-dev パスワードを要求されるので、入力してEnterキーを押す。事前に、sudoを使った場合は、要求されない場合がある。 パッケージのダウンロードが始まるので、終わるまで待つ。 念のため、再度アップデートを実施 注意事項8.10だと別のパッケージ(lib32readline5-dev)が必要となるらしい 64-bitだと、少し違うらしい ソース取得準備 Android Open Source ProjectからAndroidのソース一式を取得する為のツール「repo」の導入方法を説明。 必要なパッケージ(Git)の取得上記の開発環境構築を実施していれば、再度取得する必要は無い「端末」を起動する(「アプリケーション」→「アクセサリ」→「端末」を選択) 「端末」上で、下記のコマンドを入力して、Enterキーを押す。sudo apt-get install git-core パスワードを要求されるので、入力してEnterキーを押す。事前に、sudoを使った場合は、要求されない場合がある。 パッケージのダウンロードが始まるので、終わるまで待つ。 (動作確認はしてないので・・)他に必要なパッケージがあれば、導入。 repoインストール用のフォルダ作成と設定説明同様に、ホーム配下(~/bin/)に作成する場合を記載(/usr/local/bin/等でも良いと思う)「端末」を起動する(「アプリケーション」→「アクセサリ」→「端末」を選択) ホーム配下に移動する「端末」上で、「cd ~」入力して、Enterキーを押す ホーム配下にbinフォルダを作成「端末」上で、「mkdir bin」入力して、Enterキーを押す コマンド入力時に、binフォルダが検索対象となっていることの確認binフォルダに移動する(端末で「cd bin」) 確認するパスを表示「端末」上で、「pwd」入力して、Enterキーを押す 環境変数を表示「端末」上で、「echo $PATH」入力して、Enterキーを押す 表示される文字列に確認するパス(pwdで表示されたパス)が含まれていることを確認区切り文字は、「 」(コロン) 含まれている場合、検索対称となっている 検索対象となっていない場合の対処方法別のやり方でもできる「.bashrc」を開く端末で「gedit ~/.bashrc」を入力して、Enterキーを押す エディタが開くので、最後に下記1行を追加PATH="$PATH ~/bin" 端末を一度終了させて、再度起動し、環境変数を確認 repoを取得端末で下記を入力して、Enterキーを押すcurl http //android.git.kernel.org/repo ~/bin/repo repoフォルダの設定端末で下記を入力して、Enterキーを押すchmod a+x ~/bin/repo 注意事項repoを導入しなくても、gitだけでソース取得することも可能 「.bashrc」の編集は自己責任で・・。 ソース取得方法(repo) repoを使ってのソースのダウンロード方法について記載。 repoが導入されていることを前提条件とする。 ダウンロード先のフォルダを作成以降、「~/mydroid」として作成したとする フォルダ内に移動端末で「cd ~/mydroid」を入力して、Enterキーを押す ダウンロード情報の初期設定端末で下記を入力して、Enterキーを押すrepo init -u git //android.git.kernel.org/platform/manifest.gitビルドする場合は、「-b cupcake」等を付加して、バージョン固定したほうが良いと思う 名前、メールアドレスの問合せがあるので、入力してEnterキーを押すEnterでデフォルトが入るので、とりあえず、それでも動く 設定ファイル内に格納される。アップロード時に使用される(?) ダウンロード実施端末で下記を入力して、Enterキーを押すrepo sync 注意事項repoのイメージとしては、「manifestに対応して、複数回のgitによるソース取得を実施する」(たぶん・・) 「repo init」、「repo sync」ともに、失敗することがある。その際は、再度実施。 repoのオプション等は、http //source.android.com/download/using-repoをチェック 「repo init」後に、manifestファイル(ローカルに作成されている)を変更することで、パッケージの追加、削除等の操作ができる ソース取得方法(git) gitを使ってのソースのダウンロード方法について記載。 gitが導入されていることを前提条件とする。 (とりあえず、ビルドしたいなら、素直に、repoを使った方が良い) ダウンロード先のフォルダを作成以降、「~/mydroid」として作成したとする フォルダ内に移動端末で「cd ~/mydroid」を入力して、Enterキーを押す サーバからダウンロード端末で下記(例:標準カーネル部分取得)を入力して、Enterキーを押すgit clone git //android.git.kernel.org/kernel/common.git 注意事項gitを1回実施するだけでは、1部分のみのソースを取得するイメージかな 複数回実施して、repo1回と同程度になる(makeするまでに手間がかかる) あるパッケージのソースだけ欲しい場合には、gitのほうが便利 動くソース一式が欲しい場合は、repoのほうがおすすめ ビルド方法 repoによりソースを取得した段階でのビルド方法を記載。 「~/mydroid」内で、「repo init」、「repo sync」を実施した状態だとする ソースのルートフォルダに移動端末で「cd ~/mydorid」を入力してEnterキーを押す ビルドを開始する端末で「make」を入力してEnterキーを押す 注意事項設定を何もしていない状態だと、ユーザ空間のビルドがgeneric設定で実施される。 上記の場合、生成物は「~/mydroid/out/target/product/generic」にできる カーネルビルドは含まれておらず、基本的にユーザランドが生成物となる
https://w.atwiki.jp/redcloud/pages/25.html
目次 目次 四大要素 アクティビティ 状態変化時のコールバックメソッド 主なActivity 主なメソッド レイアウト定義(main.xml)で使える主なウィジェット インテント サービス コンテントプロバイダ 情報へのアクセス手段 memo/tips Androidに組み込まれているレイアウトを使う 指定インテントを取り扱えるアクティビティ一覧表示 設定画面を作成する リンク 四大要素 アクティビティ 状態変化時のコールバックメソッド onCreate onResume onStop 主なActivity Activity基底となるアクティビティクラス ListActivity一覧形式のアクティビティクラス ExpandableListActivity伸縮可能な一覧形式のアクティビティクラス MapActivity地図表示のアクティビティクラス PreferenceActivity設定情報を扱うアクティビティクラス 主なメソッド View findViewById(int id)idを指定してレイアウトファイルに定義されているウィジェットを取得 void finish()アクティビティを明示的に終了 Intent getIntent()このアクティビティを開始する契機となったインテントを取得 Application getApplication()このアクティビティが含まれるApplicationオブジェクトを取得 レイアウト定義(main.xml)で使える主なウィジェット TextView EditText ListView Button インテント サービス コンテントプロバイダ 情報へのアクセス手段 query insert update delete getType memo/tips Androidに組み込まれているレイアウトを使う android.R.layout.~ を使う。res/layout下にレイアウトxmlが無くてもOK(組み込まれているから) android.R.layout.simple_list_item_1 (例:ListActivityでよく使うシンプルリストレイアウト) 指定インテントを取り扱えるアクティビティ一覧表示 LaucherActivityを継承したアクティビティを作成する public class LauncherActivityExample extends LauncherActivity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.launcher_example); } @Override protected Intent getTargetIntent() { Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("http //developer.android.com/")); //ブラウザ系アクティビティが対象になる return intent; } } 設定画面を作成する PreferenceActivityを継承したアクティビティを作成する XMLで設定項目を定義する res/xml の下に定義ファイルを作成(例:res/xml/pref.xml)※eclipseで[新規]→[Android XML File]でウィザードを使って作成すると雛型ができて楽 Activityクラス public class PreferenceActivityExample extends PreferenceActivity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); addPreferencesFromResource(R.xml.pref); //xmlの設定を読み込む場合はaddPreferencesFromResourceメソッド } } ソースコードで設定項目を定義する リンク
https://w.atwiki.jp/bloodysnow/pages/23.html
Android携帯でやりたいこと 青空文庫 PC用メール閲覧 webブラウズ twitter 2ch ニコ動 囲碁 Skype MSNメッセ mixi 音楽 マンガ Evernote
https://w.atwiki.jp/api_programming/pages/195.html
下位ページ インテントとインテントフィルタ サービス(Service) ストレージオプション フラグメント(Fragment) プロセスとスレッド(processes and threads) リストビュー(List View) レイアウト(Layout) 入力コントロール(Controls) 設定(Setting) 通知(Notification) Content スピナーコントロールの設定レイアウトの準備 選択肢の設定string.xmlでの設定 プログラム側から値を選択する アクティビティアプリの閉じられ方で、挙動が異なる アクションバーの代わりに、ツールバーを使うアクションバーを消す ツールバーをレイアウトに追加する Activity内で、アクションバーの代わりに使う記述をする スライドメニューを実装するドロワーレイアウトを作成する ドロワービューの中身を準備するListViewで作る 別のXMLファイルで作る ドロワーのオープン・クローズを実装する バックグラウンド処理(サービス) 閉じられても動作するサービスを動かすServiceクラスの作成 Activityから、作成したサービスを動かす 加速度センサの情報を受ける 回転角の情報を受け取る回転角の解釈 画面の回転を抑制するAndroidManifest.xmlで抑制する 動的に(プラグラム内で)で抑制する インテントにオブジェクトの情報を乗っけるparcelable をインプリメントしたクラスをつくるParcelable.Creater フィールドの実装 BundleやIntentに情報を乗せる Activity側で受ける 複数の情報をリストにして表示する バイブレーションを一定時間、作動させるパーミッションの追加 Vibratorオブジェクトを生成する vibrateを実行する 通知バーにバックグラウンド起動中の表示を出す 裏返したときの方向で、記録を分ける メニューのバーを設定するメニューリソースを準備するフォルダの作成 リソースファイルの作成 設定したメニューファイルを、Activityのメニューバーに評させる メニューの選択を受け取る処理を作る チェックボックスを動作させる 設定画面を設定する/設定情報をローカルストレージに残す 記録内容をGoogleスプレッドシートに記録する 記録内容をGoogleカレンダーに記録するブラウザでURLを開く ブラウザを開くURIとして、認証ページを指定する リダイレクトを受け取る 受け取ったリダイレクトをデータに紐解く codeを送って、tokenを受け取る tokenを保存する 終了時間と開始時間から、時間の計算をする リストビューで独自レイアウトを設定する USBデバッグ リリースビルド スピナーコントロールの設定 [部分編集] レイアウトの準備 Spinner android id="@+id/planets_spinner" android layout_width="fill_parent" android layout_height="wrap_content" / 選択肢の設定 string.xmlでの設定 まずは、string.xmlに文字配列を作る string-array name="planets_array" item Mercury /item item Venus /item item Earth /item /string-array この文字配列をアダプタにして、スピナーコントロールにアダプタをするリソースのアダプタ化には、ArrayApapter.createFromResource を使用できる。simple_spinner_item はデフォルト外観を設定している。通常はこれで良し。 setDropDownViewResource(int) は選択時に一覧を表示するのに使う。なくても一応ドロップダウンは出てくるが、ちょっとしょぼい? Spinner spinner = (Spinner) findViewById(R.id.spinner); ArrayAdapter CharSequence adapter = ArrayAdapter.createFromResource(this, R.array.planets_array, android.R.layout.simple_spinner_item); adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); spinner.setAdapter(adapter); createFromResource - ArrayAdapter | Android Developers setDropDownViewResource - ArrayAdapter | Android Developers プログラム側から値を選択する Spinner.setSelection で位置を指定する。その位置を取得するにはAdapterを使う。 使っているアダプタを取得するobjSpinner.getAdapter でアダプタを取得できる objAdapter.getPosition("...") でセレクタの位置を取得値が見つからなかったら -1 が返る objSpinner.setSelection に先程取得した位置を設定する ArrayAdapter spinnerAdapter = (ArrayAdapter) objSpinner.getAdapter(); int i = spinnerAdapter.getPosition("value"); objSpinner.setSelection(i); getAdapter - AbsSpinner | Android Developers getPosition - ArrayAdapter | Android Developers setSelection - AbsSpinner | Android Developers アクティビティ アプリの閉じられ方で、挙動が異なる onDestroyが呼ばれない限りは、Serviceを使わずとも、 ↓にある通り、ホームボタンとバックボタンでアプリケーションから離れた場合で挙動が違う。 https //kokufu.blogspot.jp/2011/03/activity.html 説明として、 ホームボタン:ホームアプリケーションが起動している バックボタン:Activityスタックからポップしている と書いてあったが、気持ち悪いのは、□ボタンを押すとあたかもまだ生きているかのように、アプリケーションリストに表示されるから。画面上に残っているが実際には onDestroy で消えている。 このあたりが、「アプリケーションをスワイプして消しても消さなくてもメモリにはそれほど影響しない」ということなんだろうか。 アクションバーの代わりに、ツールバーを使う [部分編集] 今後の拡張性から、アクションバーよりツールバーを使ったほうが良い、という記述をちょこちょこ見かけるが、Android Studioでプロジェクトを作ると、基本はアクションバーが設定されている。これをツールバーに置き換える。 アプリバーの追加 | Android Developers Toolbar | Android Developers AndroidのToolBar(新しいActionBar)メモ | Qiita アクションバーを消す res/values/styles.xmlで AppThemeのテーマを変更する style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar" ツールバーをレイアウトに追加する android.support.v7.widget.Toolbar android id="@+id/toolbar" android layout_width="match_parent" android layout_height="wrap_content" / レイアウトの@android */* ,?attr/* ,?* ,?android attr/* の違い | Qiita Activity内で、アクションバーの代わりに使う記述をする /* ToolBarの設定 */ Toolbar toolbar = (Toolbar)findViewById(R.id.toolbar); toolbar.setTitleTextColor(Color.WHITE); // 設定をしておく setSupportActionBar(toolbar); // アクションバーの代わり、という設定 これを書かないと、画面上では何も表示されない(空間だけはある) スライドメニューを実装する [部分編集] NavigationDrawer が正式名称? DrawerLayout | Android Developers ナビゲーションドロワーの作成 | Android Developers ドロワーレイアウトを作成する レイアウトxmlにて、DrawerLayout オブジェクトをレイアウトのルートビューとして指定する。 ルートの中にドロワービューとメインビューを設定する順序はメインビューを先にする高さはルートに合わせる(match_parent) 次にドロワーのビューを指定するlayout_gravityを指定する(layout_gravity:どっちにくっつけるか、どちら方向から出てくるか?)右から左に出す場合にはstart layout_heightは親ビューと同じ高さを指定する layout_widthはすべての情報が見える幅を指定する ドロワービューの中身を準備する ListViewで作る ListViewの中に android layout_gravity="..." を入れないと、スライドで入ってくる設定にならず、重ねて見えている状態になる android background="#111" 背景がないと、中途半端にすけた状態で表示される。 別のXMLファイルで作る NavigationViewで作った場合、ヘッダ部分とメニュー部分をそれぞれレイアウトとメニューで作成する app headerLayout="@layout/drawer_header" app menu="@menu/drawer" ドロワーのオープン・クローズを実装する DrawerLayout にリスナーをセットする。このリスナーは DrawerLayout.DrawerListener を実装して、使う。 Activity にアクションバーがセットされている場合は ActionBarDrawerToggle が DrawerLayout.DrawerListener を実装する。 DrawerLayout mDrawerLayout = ...; ActionBarDrawerToggle mDrawerToggle; mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout, R.string.drawer_open, R.string.drawer_close) { public void onDrawerClosed(View view) {...} public void onDrawerOpened(View drawerView) {...} }; // Set the drawer toggle as the DrawerListener mDrawerLayout.setDrawerListener(mDrawerToggle); 【Android】スライドして表示されるメニュー | Qiita Navigation Drawer の概要 | Android 開発入門 Navigation Drawer の基本的な実装方法 | Android 開発入門 バックグラウンド処理(サービス) サービス - Android Developers Androidアプリでのバックグラウンド処理と通知機能 | Android Studio 2で始めるアプリ開発入門 - CodeZine 流れ Serviceのサブクラスを作成する AndroidManifest.xmlにサービスを登録 サブクラスで、必要なクラスをオーバーライドする。次のあたり。onCreate() onStartCommand() onDestroy() アクティビティからサービスを起動する (きちっと止まるように設計しておく) 閉じられても動作するサービスを動かす バックグラウンドで動作させるためにはServiceを用いる。 Serviceクラスの作成 Activityのように、作成・開始などのイベントで動くが、おもに3つ。 onCreate onStartCommand onDestroy Service | Android Developers Activityから、作成したサービスを動かす startServiceで起動、stopService(stopSelf)で停止。忘れずにServiceを止めないと、いつまでも動き続ける。 startService、stopServiceなどには、インテントを準備して、サービスにそれをなげる形をとっている。 startService - Context | Android Developers stopService - Context | Android Developers stopSelf - Service | Android Developers 加速度センサの情報を受ける 回転角の情報を受け取る センサーは加速度まではそのまま読み取れるが、回転角は加速度情報、地磁気情報から計算する必要がある。まず getRotationMatrix で回転行列を求め、getOrientation で回転行列を回転角に変換する(計算する) getRotationMatric - SensorManager | Android Developers getOrientation - SensorManager | Android Developers 引数に取った2つの配列には、傾斜行列、回転行列(の情報)が計算されて入ってくる。情報が不要ならnullでよい。 回転角の解釈 正位置として Zは天を指す Yは磁北を指す Xは Y,Z の外積を指す 画面の回転を抑制する AndroidManifest.xmlで抑制する 回転させないActivityに android screenOrientation="portrait" を追加すると、縦向き固定になる activity | Android Developers 動的に(プラグラム内で)で抑制する Activity内で、setRequestedOrientation を呼び出す setRequestedOrientation - Activity | Android Developers screenOrientation - ActivityInfo | Android Developers インテントにオブジェクトの情報を乗っける bundleで多くの情報をわたすような方法として、putParcelableArrayList くらいしか見当たらないので、これを使う。そのためには、Parcelable をimplements したようなクラスを作る必要がある。 Bundle | Android Developers parcelable をインプリメントしたクラスをつくる Parcelable実装にはParcelable.Createorというstatic fieldが必要。そのフィールドの初期化にて、Parcelに保存したデータを復元するためのコンストラクタを呼ぶ。 Parcelable | Android Developers Parcelable.Creater フィールドの実装 Parcelable.Creater | Android Developers createFromParcel(Parcel source)Parcelable.writeToParcel() で書き出されたParcelデータをインスタンス化する → コンストラクタを作っておく newArray(int size)ParcelableクラスのArrayを作る BundleやIntentに情報を乗せる IntentならputParcelableArrayListExtra、BundleならputParcelableArrayList で情報を登録 putParcelableArrayListExtra - Intent | Android Developers getParcelableArrayList - Bundle | Android Developers Activity側で受ける IntentならgetParcelableで受けられる。受けたときにすでにParcelableをimplementしたオブジェクトで受けられる。 getParcelableArrayListExtra - Intent | Android Developers getParcelableArrayList - Bundle | Android Developers 複数の情報をリストにして表示する [https //www54.atwiki.jp/api_programming/pages/202.html] バイブレーションを一定時間、作動させる Vibratorインスタンスからvibrate()を実行する。バイブレーションの実施にはAndroidManifest.xmlにパーミッションの追加が必要。 パーミッションの追加 マニフェストにパーミッションを追加する - パーミッションの宣言 | Android Developers Vibratorオブジェクトを生成する getSystemServiceでVibratorオブジェクトを生成する Vibrator vibrator = (Vibrator) getSystemService(VIBRATOR_SERVICE); getSystemService - Context | Android Developers Vibrator | Android Developers vibrateを実行する 幾つかパターンはあるが、かんたんなところで、これ。 vibrator.vibrate(500); vibrate - Vibrator | Android Developers 通知バーにバックグラウンド起動中の表示を出す 裏返したときの方向で、記録を分ける メニューのバーを設定する メニューリソースを準備し、表示させる。そのうえで、メニューのタップ動作に対する反応を記述する メニュー | Android Developers メニューリソースを準備する フォルダの作成 デフォルトではメニュー用のフォルダが無い(かもしれない)ので、res/menuを追加し、ここに入れておく。 resフォルダ右クリック [New]>[Android resource directory]を選択 ダイアログで、「Resource type 」から「menu」を選択し、OK リソースファイルの作成 menuフォルダを右クリック [New]>[Menu resource file] ファイル名を入力し、OK ファイル内に menu item / item / /menu を記述(実際はidやタイトルを設定する必要あり) Menu Resource | Android Developers 設定したメニューファイルを、Activityのメニューバーに評させる onCreateOptionMenuをオーバーライドして、この中でリソースの指定などを行う。XMLのメニューを実際?のメニューオブジェクトに変換するのに、inflatorを使用できる。 @Override public boolean onCreateOptionsMenu(Menu menu) { MenuInflater inflater = getMenuInflater(); //(1) inflater.inflate(R.menu.menu_options_menu_list, menu); //(2) return super.onCreateOptionsMenu(menu); //(3) } onCreateOptionMenu - Activity | Android Developers メニューの選択を受け取る処理を作る オプションメニューを作っていれば、その受取はonOptionsItemSelectedをオーバーライドして処理できる。 @Override public boolean onOptionsItemSelected(MenuItem item) { return super.onOptionsItemSelected(item); } このとき、itemにクリックされた情報が入っているので、これを紐解いて、どのメニューがクリックされたか判断し、switchなどで処理する。 int itemId = item.getItemId(); Android 3.0(APIレベル11)以降では メニューリソースXMLのitemに、android onClick を記述しておくことで、動作を定義させることもできる。 チェックボックスを動作させる Android/入力コントロール(Controls) 設定画面を設定する/設定情報をローカルストレージに残す Android/設定 記録内容をGoogleスプレッドシートに記録する http //qiita.com/konnobu/items/8bec3d5a45235fc88a08 記録内容をGoogleカレンダーに記録する 多分、クライアント用のライブラリが作られていて、簡単に認証処理をしたり、データを取得したりできるようになっていると思われるが、別サイトでも転用が聞くように、地道な方法を取ってみる。というか、専用のライブラリの使い方をよくわかっていない。 流れは OAuth2.0で認証Google API にプロジェクトと登録(キーの発行) 認証コードを発行 受け取り コードを access token と交換 access token も使って、リクエスト送信 こまごまと引っかかった場所が多数。 AndroidManifest.xmlにパーミッションの設定が必要 ブラウザでURLを開く Android/インテントとインテントフィルタ ブラウザを開くURIとして、認証ページを指定する GoogleのOAuth2認証 OAuth2認証 | Android Developers Step 1 Send a request to Google's OAuth 2.0 server | Google Identify Platform リダイレクトを受け取る 大概の(google 以外でも)場合は、認証後に指定したリダイレクト先に飛ばしてくれる。そのスキーム名に応じて、Android側でどのアプリで開くのかを考えてくれる。Android に「このスキームがきたら、俺のアプリで開いて」と指示するためには、AndroidManifest.xml に記述する必要がある。 scheme // host port / path intent-filter内で、action, category, data を指定する。上記のリダイレクト先に対応する内容を書くのは data で、scheme は data android scheme="com.example.testproject" / のようになる。 Intent の 定数として ACTION_VIEW などが定義されているが、実体は文字列で、それが android.intent.action.VIEW などになる(ので、どれを設定するかはIntent を参照)。ブラウザでどんなスキームがきたらヨソになげるのか、どんな action として投げるのか、説明されている場所がわからないが、ひとまず action ACTION_VIEW category CATEGORY_BROWSABLR scheme ここは各自で で開けた。redirect_uri で scheme //~ が指定できない( /だけ)なので、hostは存在せず、pathだけ。 インテント解決 - インテントとインテント フィルタ | Android Developers Intent - Android Developers 受け取ったリダイレクトをデータに紐解く 一旦受け取れれば、中身は getIntent() を経由して、中身を見られる(Intent.getAction(), Intent.getCategories() など)。OAuth では、path のなかに code を入れて返してくるので、Dataのなかを探せばある Intent intent = getIntent(); String data = intent.getDataString(); とすると、googleの認証で指定した redirect_uri のあとに code がくっついて返ってきている。以下、サンプル com.example.####.#### /oauth2callback?code=4/8abcdefg# 上記の場合、oauth2callback を uri.getPath() で、4/8abcdefg# を getQueryParameter("code") で受け取れる。 getIntent - Activity | Android Developers getData - Intent | Android Developers getQueryParameter - Uri | Android Developers codeを送って、tokenを受け取る コードと必要情報を POST することで、access token との交換をする。この処理は、UIスレッドだとエラーになるので、AsyncTaskで実行する必要がある。 また、交換がうまく行かなかったときは、HttpURLConnection の getInputStream ではなく、 getErrorStream に情報が流れるため、プログラムの確認作業では注意。(この辺をよくわかっていなくて、エラー原因を探すのに苦労した。) redirect_uri はスキームもパスもコード発行依頼時と同じものを使う。 Android/プロセスとスレッド(processes and threads) Async Task | Android Developers tokenを保存する プレファレンスへの保存 終了時間と開始時間から、時間の計算をする リストビューで独自レイアウトを設定する https //www54.atwiki.jp/api_programming/editx/202.html USBデバッグ http //www.aiseesoft.jp/tutorials/android-debug-mode.html リリースビルド http //androidstudio.hatenablog.com/entry/2014/07/26/154043
https://w.atwiki.jp/api_programming/pages/196.html
下位ページ Content 設定画面を設定する/設定情報をローカルストレージに残す設定のXMLを準備するxmlファイルを置くフォルダ xmlファイルの概要 PreferenceActivityを作成 プレファレンスを読み出す 設定画面を設定する/設定情報をローカルストレージに残す 設定情報はPreferenceActivityを継承したクラスで作成する。これにより、 設定をローカルストレージに残す 設定の画面が揃う(統一されたユーザインターフェースになる) といった利点がある 設定 | Android Developers 設定のXMLを準備する xmlファイルを置くフォルダ res/xml xmlファイルの概要 ごく単純な設定画面の場合の構造。チェックボックス1個。 PreferenceScreen CheckBoxPreference / /PreferenceScreen 実際には名前空間の指定などもあるが、構造的にはこれ。 サポートされている属性は以下を参照 Preference | Android Developers PreferenceActivityを作成 PreferenceFragmentを継承したクラスで作成(API11よりフラグメントの使用を推奨。なので、とりあえず形の上はPreferenceFregmentで作成して、通常のActivityで開く。) onCreate() のコールバック時に、ビューのレイアウトをロードしてはならないことに注意。代わりにaddPreferencesFromResourceで、XMLファイルをアクティビティに追加する。 addPreferencesFromResource - PreferenceActivity | Android Delelopers プレファレンスを読み出す PreferenceManager.getDefaultSharedPreferences() で、SharedPreferencesオブジェクトを取得し、キーを使って、値を取得する。取得する値で、メソッドを使い分ける。 getDefaultSharedPreferences では引数にコンテクストを取るが、フラグメントはコンテクストを持っていないので、getActivityで呼び出し元Activityを取得する。 SheredPreferences | Android Developers
https://w.atwiki.jp/fujiyan/pages/38.html
(作成中) WebコミックLibraryhttp //web-comi.appspot.com/GAE/JとSlim3で作成してみた、各出版社から配信されているWebコミックをまとめて閲覧できるサイトです。只今、実験運用中… 参考サイト 公式サイト Androidで動く携帯Javaアプリ作成入門 Tech Booster 逆引きAndroid入門 ActivityとView 参考 Android Developers 世界を目指せ!Androidアプリ開発入門 Activityは、画面を表す。 ViewはUIを構成する部品。ActivityにViewを設定することで、画面を構築する。 Viewの構成方法は2つ(静的)レイアウトXMLを記述してコンパイルしたものを設定。お手軽。通常はこっち (動的)Viewオブジェクトを適宜生成して設定。前もって作成するViewが決まらない場合はこっち。 XMLでViewを定義 res/layout以下に.xmlファイルを作成 作成すると、R.layout.[ファイル名]という定数名で、作成したViewを表すIDが定義される(ファイル名がmain_layout.xmlなら、R.layout.main_layoutという定数が定義される)。 定義されたIDをActivity#setContentView()に渡す。 複数のView定義が必要な場合は、その分だけxmlファイルを作れば良い。 画面切り替え 参考 アンドロドロ バックボタンで前画面に戻したい場合はActivity切り替えで実装。バックボタンを押すと、アクティブなActivityに対してfinish()が呼び出され、直前のActivityがアクティブになる。ブラウザの「戻る」感覚だろうから、こっちが通常なんでしょう。 グローバルリソース(カメラ等)の取得/解放は、よほどの事情が無い限り、onResume()/onPause()で行うこと。でも、カメラでよくやるような、SurfaceHolderのsurfaceCreated()/surfaceDestroyed()は、Activity切り替え時のタイミングで呼ばれるっぽいので、ここでカメラの取得/解放を行っても大丈夫っぽい(あやふや)。 Activityを2つ用意するのか、1つのActivity内でViewFlipperを使うかは悩み中。多分、メモリ管理を細かく制御して、OSに負担を掛けないようにするのはActivity2つなんでしょう。次画面のActivity起動時に次画面用のリソースを取得、前画面のリソースを解放とか、onStop()/onRestart()でリソースの一時解放/再取得とか。 ViewFlipperの場合は、全ての画面のリソースをまとめてメモリにロードするんじゃないかと。 アプリケーションの終了 単一Activityの場合はfinish()で良い。 複数Activityの場合は、最後に開始したActivityから順次finish()していき、最後にroot Activityをfinish()させるのが良いと思う。これは、Activityはスタックに詰まれていくことに由来。LIFOでfinish()していく。 多分、ActivityからTaskを終了させる方法は無い。何故なら、Activityは、さまざまなTaskから呼ばれることを想定しているため、自分を呼んだTaskを勝手に終了させるわけにはいけないから、かと。 moveTaskToBack()でTaskをバックグラウンドに追いやって、そのうちOSに掃除してもらう、という方法もある。こっちがAndroidの標準だ、という話もあるけど、何となく、うーん。だって、この方法だと、再起動したときに、前の状態から開始されてしまうし…。 moveTaskToBack()はあくまで「中断」であり、「終了」はやっぱり地道にfinish()していくべきだと思うの 一般的な実装としては、startActivityForResult()でchild Activityを開始し、child Activityの終了後に呼ばれるonActivityResult()で、自身もfinish()する System.exit(0)で終わらせてはゼッタイダメ。 カメラ(Android 2.1 API Level 7) AndroidManifest.xmlの記述 参考 プログラマのネタ帳 uses-permission android name="android.permission.CAMERA" / uses-feature android name="android.hardware.camera" / uses-feature android name="android.hardware.camera.autofocus" / uses-feature android name="android.hardware.camera.flash" / uses-permissionで、カメラ利用の許可が必要であることを宣言し、残りの3つでカメラ、オートフォーカス、フラッシュの機能を使用することを宣言します。 また、Activityの属性に下記を追加。 android screenOrientation="landscape" android theme="@android style/Theme.NoTitleBar.Fullscreen" screenOrientationの設定は、なんか、カメラは水平でしか使えないらしいため…。 themeの設定は、アプリをフルスクリーン表示にするため。カメラアプリは基本的にフルスクリーン。 MediaStore.Images.Media.insertImage()で保存すると画質が落ちる 参考 日本Androidの会 画像を加工しない場合は、生成されたjpegデータをそのまま保存する。 // Camera#takePicture()の第3引数に渡す、コールバックオブジェクト private Camera.PictureCallback pictureListener = new Camera.PictureCallback() { public void onPictureTaken(byte[] data, Camera camera) { try { insertImageToMediaStore(data); } catch (IOException e) { throw new RuntimeException(e); } //後処理を記述 } }; // dataに格納されたjpegデータを保存 private void insertImageToMediaStore(byte[] data) throws IOException { ContentResolver resolver = getContentResolver(); ContentValues values = new ContentValues(); values.put(MediaStore.Images.Media.MIME_TYPE, "image/jpeg"); values.put(MediaStore.Images.Media.DATE_TAKEN, System.currentTimeMillis()); Uri uri = resolver.insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values); ByteArrayInputStream in = new ByteArrayInputStream(data); try { int size; final int BUFFER_SIZE = 8192; byte[] buffer = new byte[BUFFER_SIZE]; BufferedOutputStream out = new BufferedOutputStream(resolver.openOutputStream(uri)); try { while ((size = in.read(buffer, 0, buffer.length)) 0) { out.write(buffer, 0, size); } out.flush(); } finally { out.close(); } } finally { in.close(); } } 画像を加工して保存 参考 Androidのあ~ん rTAKI0329's android ブログ グロブ(OutOfMemoryで落ちる件) なんか、下の方法みたいに、カメラの撮影サイズでBitmapの別インスタンスを生成すると、メモリ不足で落ちるっぽいぞ…。エミュレーション環境では普通に動くけど、実機でカメラ撮影後に突然落ちるような場合は原因の一つとして疑ってみてもいいかも コールバックメソッドに渡されるjpegデータをBitmapに変換して、Canvasで描画をする。その後、Bitmapをjpegで保存する。 jpeg→ビットマップ→jpegの変換を行うので、画質が落ちたり、ファイルサイズが増えたり…。 BitmapFactory.decodeByteArray()で作るBitmapがimmutableなため、copy()でmutableなBitmapを再作成する。API Level 11なら、decodeByteArray()のオプションでmutableなBitmapを直接作れるかも? // Camera#takePicture()の第3引数に渡す、コールバックオブジェクト private Camera.PictureCallback pictureListener = new Camera.PictureCallback() { public void onPictureTaken(byte[] data, Camera camera) { Bitmap orgBmp = BitmapFactory.decodeByteArray(data, 0, data.length); Bitmap bmp = orgBmp.copy(Bitmap.Config.ARGB_8888, true); Canvas canvas = new Canvas(bmp); // canvasで描画 try { insertImageToMediaStore(bmp); } catch (IOException e) { throw new RuntimeException(e); } camera.startPreview(); } }; // Bitmapをjpegで保存 private void insertImageToMediaStore(Bitmap bmp) throws IOException { ContentResolver resolver = getContentResolver(); ContentValues values = new ContentValues(); values.put(MediaStore.Images.Media.MIME_TYPE, "image/jpeg"); values.put(MediaStore.Images.Media.DATE_TAKEN, System.currentTimeMillis()); Uri uri = resolver.insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values); BufferedOutputStream out = new BufferedOutputStream(resolver.openOutputStream(uri)); try { bmp.compress(Bitmap.CompressFormat.JPEG, 100, out); out.flush(); } finally { out.close(); } } GPSとジオコーディング(Android 2.1 API Level 7) LocationManagerを取得する。 LocationManager lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE); onLocationChanged()が呼ばれなくなる 参考 A Day In The Life LocationManager#removeUpdates()を呼ばずにActivityを終了させると、次回起動時にonLocationChanged()が呼ばれなくなるらしいです。必ず呼びましょう。 配布と署名 アプリケーションはapkファイルにパッケージングして配布する。 署名付きapkファイルじゃないと、端末にインストールされません。 署名のためのkeytool使用法 参考 Android Developers keyalgで指定するアルゴリズムはDSAとRSAがサポートされているらしい。通常はRSAにしておきましょう。 keysizeについては2048以上を推奨とされています。 validityで指定する有効期限については、10000日以上を推奨されています。 ということで、推奨されるkeytoolのオプションは keytool -genkey -v -keystore [keystoreファイル名] -alias [エイリアス] -keyalg RSA -keysize 2048 -validity 10000 1つのkeystoreに対して、複数の鍵を生成できる。keystoreの中で、鍵を識別するためにエイリアスを用いる。 なので例えば、keystoreファイル名はワークスペース名、エイリアスはプロジェクト名(=アプリケーション名)、みたいな感じにすると良い(あくまで例)。 keytool -genkey -v -keystore workspace.keystore -alias app1 -keyalg RSA -keysize 2048 -validity 10000 keytool -genkey -v -keystore workspace.keystore -alias app2 -keyalg RSA -keysize 2048 -validity 10000 keystoreファイルやパスワードは失くしたり忘れたりしないようにね あれ、keytoolいらなくね?(ADT Plugin for Eclipseがあれば) apkを作成したいアプリのプロジェクトのルートのコンテキストメニューから、[Export...]→[Android]-[Export Android Application]を選択する。 [Project Checks]で、何もエラーが無いことを確認して[Next ] [Keystore selection]では、最初にkeystoreファイルを作る場合は[Create new keystore]を選択[Location]には、keystoreファイルのフルパスを入力失くさないように、ワークスペース内に、keystoreファイル格納用のプロジェクトを作成し、そこに作成すると良いかも。 [Password]と[Confirm]には、keystoreファイルにアクセスするためのパスワードを入力する。 [Key Creation]では、下記を入力[Alias]には鍵のエイリアスを入力。まぁ普通はアプリケーション名 [Password]と[Confirm]には、鍵にアクセスするためのパスワードを入力する。 [Validity]には年を入力するので注意。推奨は25年以上です。 [First and Last Name]から[Country Code (XX)]については、どれか1つにでも入力すればOK。 [Destination and key/certificate checks]では、下記を入力[Destination APK file]に、出力するapkファイルをフルパスで入力。 あらまぁ簡単